In software development, there can be many different groups of programmers working on different portions of software code that will later be compiled to create a finished program. A compiler is software that converts a set of high-level language statements (e.g., high level programming language such as C/C++, COBOL, etc.) into a lower-level representation. For example, compiler software translates a program written in a high-level programming language (C/C++, COBOL, etc.) into machine language. A compiler may generate assembly language first and then translate the assembly language into machine language. A utility known as a “linker” then combines all required machine language modules into an executable program that can run in the computer. A help compiler converts a text document embedded with appropriate commands into an online help system. A dictionary compiler converts terms and definitions into a dictionary lookup system.
Compiled programs are translated into the machine language of the target computer. Interpreted programs are either kept in their original source code or are precompiled into an intermediate form. In both cases, an interpreter is required to translate the program into machine language at runtime, whereas the compiled program is “ready to go.” In software development an integrated development environment (IDE) may be used which includes a set of programs run from a single user interface. For example, an IDE often includes a text editor, compiler and debugger, which are all activated and function from a common menu.
As programs are developed they are tested under a workload, e.g., a system under test (SUT), to ensure that the programs will function as intended. Assertions are a technique used to detect errors in software. In the field of software development, assertions are purposefully placed in the source code as it is written. As programs are compiled or tested the assertions are checked to verify conditions always believed to be true. A run time test put in place by a developer will check to see if assertions have failed. In this manner assertions provide an early clue to potential problems in the code such that one can stop and debug early rather than later in an effort to avoid glitches in the code. Thus, assertions help catch bugs and detect invalid states of execution in a program. Assertions can include run time assertions, compile time assertions, as well as assertions associated with hardware and circuitry.
Test programs operating on a SUT or a compiler can create a list of assertions which fail for review by a developer of a particular portion of software code. Sometimes certain assertions are more useful than others in terms of providing insight as to what is being done wrong in developing software code. Current test programs do not analyze and correlate failed assertions with a type of assertion in the code under development. This task rests with the program developer. With different groups of programmers working on different portions of software code it can be cumbersome to communicate one programmer's code development findings to that of another programmer working on another portion of the software code.